diff options
Diffstat (limited to 'src/app/groups/[groupId]/expenses/create-from-receipt-button-actions.ts')
| -rw-r--r-- | src/app/groups/[groupId]/expenses/create-from-receipt-button-actions.ts | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/app/groups/[groupId]/expenses/create-from-receipt-button-actions.ts b/src/app/groups/[groupId]/expenses/create-from-receipt-button-actions.ts index 1714f82..78f043d 100644 --- a/src/app/groups/[groupId]/expenses/create-from-receipt-button-actions.ts +++ b/src/app/groups/[groupId]/expenses/create-from-receipt-button-actions.ts @@ -1,7 +1,9 @@ 'use server' import { getCategories } from '@/lib/api' import { env } from '@/lib/env' +import { formatCategoryForAIPrompt } from '@/lib/utils' import OpenAI from 'openai' +import { ChatCompletionCreateParamsNonStreaming } from 'openai/resources/index.mjs' const openai = new OpenAI({ apiKey: env.OPENAI_API_KEY }) @@ -9,7 +11,7 @@ export async function extractExpenseInformationFromImage(imageUrl: string) { 'use server' const categories = await getCategories() - const body = { + const body: ChatCompletionCreateParamsNonStreaming = { model: 'gpt-4-vision-preview', messages: [ { @@ -21,7 +23,7 @@ export async function extractExpenseInformationFromImage(imageUrl: string) { This image contains a receipt. Read the total amount and store it as a non-formatted number without any other text or currency. Then guess the category for this receipt amoung the following categories and store its ID: ${categories.map( - ({ id, grouping, name }) => `"${grouping}/${name}" (ID: ${id})`, + (category) => formatCategoryForAIPrompt(category), )}. Guess the expense’s date and store it as yyyy-mm-dd. Guess a title for the expense. @@ -35,7 +37,7 @@ export async function extractExpenseInformationFromImage(imageUrl: string) { }, ], } - const completion = await openai.chat.completions.create(body as any) + const completion = await openai.chat.completions.create(body) const [amountString, categoryId, date, title] = completion.choices .at(0) |
